package io;

import java.io.*;

/**
 *  java将流分为两类:节点流与处理流
 *  节点流:又称为低级流，是实际连接我们的程序与另一端的"管道"，负责实际读写数据的流。
 *        记住:读写一定是建立在低级流的基础上进行的！
 *  处理流:又称为高级流，过滤流。不能独立存在，必须连接在其他流上，目的是当数据流经它
 *        时对数据进行某种加工处理，简化我们的相应操作。
 *  实际开发中，我们总是串联一组高级流到低级流上，完成一个复杂的数据读写操作，这个过程
 *  也成为了流的连接，这是IO的精髓。
 *
 *  缓冲流
 *  java.io.BufferdeInputStream和BufferedOutStream
 *  缓冲流在流连接中的作用是加快读写效率
 */
public class CopyDemo3 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("test.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);
        FileOutputStream fos = new FileOutputStream("test.cp.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        int d;
        long start = System.currentTimeMillis();//执行到这一步的毫秒值
        while ((d=bis.read())!=-1){//使用缓冲流读取字节
            bos.write(d);//使用缓冲流写出字节
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕！耗时"+(end-start)+"ms");
        bis.close();//关闭流时只需要关闭高级流即可，它会自动关闭它连接的流
        bos.close();
    }
}
